package dssd.modelo;

import java.util.Date;

import dssd.constantes.Constantes;


public class SolicitudAlta extends Solicitud {

	private String examenMedico;
	public String tipo = Constantes.ALTA;
	
	public SolicitudAlta(Conductor conductor, Date fechaSolicitud, String examenMedico) {
		super(fechaSolicitud, new EvaluacionVial(), new ExamenManejo(), conductor);
		this.examenMedico = examenMedico;
		
	}
	
	public SolicitudAlta(Date fechaSolicitud, EvaluacionVial evaluacionVial,ExamenManejo examenManejo, Conductor conductor, String examenMedico) {
		super(fechaSolicitud, evaluacionVial, examenManejo, conductor);
		this.examenMedico = examenMedico;
	}

	public void setExamenMedico(String examenMedico) {
		this.examenMedico = examenMedico;
	}

	public String getExamenMedico() {
		return examenMedico;
	}
	public SolicitudAlta() {
		super();
	}
	public boolean isPendiente(){
		if(esDesaprovada()) return false;
		if (this.getLicencia() != null)return false;
		/*if (this.getLicencia()!= null)return false;*/
		if (this.getExamenMedico().equalsIgnoreCase(Constantes.ADEUDA)) return true;
		if (this.getExamenMedico().equalsIgnoreCase(Constantes.INHABILITADO)) return false;
		/*if (this.getExamenMedico().equalsIgnoreCase(Constantes.INHABILITADO)) return false;*/
		if ((this.getExamenManejo().getFecha().after(new Date())) && (this.getEvaluacionVial().getFecha().after(new Date()))) return true;
		return false;
	}
	
	public boolean pendienteDeExamen(){
		if (this.getExamenMedico().equalsIgnoreCase(Constantes.HABILITADO)) {
			if (this.getEvaluacionVial().getResultado()==null && this.getExamenManejo().getResultado()==null){
			return true;}
			}
		return false;
		}
	
	public boolean estaPendienteDeEvaluacion(){
		return ((this.isPendiente()) && this.getExamenMedico().equalsIgnoreCase(Constantes.HABILITADO));
	}

	public String getTipo() {
		return tipo;
	}
	public boolean esDesaprovada(){
		boolean medicoEsInhabilitado=this.getExamenMedico().equalsIgnoreCase(Constantes.INHABILITADO);
		boolean manejoEsDesaprobado;
		boolean vialEsDesaprobado;
		if(this.getExamenManejo().getResultado()==null){
			manejoEsDesaprobado=false;
		}else{
			manejoEsDesaprobado=this.getExamenManejo().getResultado().equalsIgnoreCase(Constantes.DESAPROBADO);
		}
		if(this.getEvaluacionVial().getResultado()==null){
			vialEsDesaprobado=false;
		}else{
			vialEsDesaprobado=this.getEvaluacionVial().getResultado().equalsIgnoreCase(Constantes.DESAPROBADO);
		}
		return (medicoEsInhabilitado || manejoEsDesaprobado || vialEsDesaprobado);
	}
}
